#include <stdio.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

void Runchild()
{
  int cnt=5;
  while(cnt--)
  {
    printf("I am child process\n");
    sleep(1);
  }
}

int main()
{
  pid_t id=fork();
  if(id==0)
  {
    printf("I am child process\n");
    char* const argv[]=
    {
        (char*)"test.c",
        (char*)"-a",
        (char*)"-b",
        NULL
    };
    //execv("/usr/bin/ls",argv);
   // execl("/usr/bin/ls","ls","-l","-a",NULL);
   //execlp("top","top",NULL); 
    //execvp("ls",argv);
    //putenv("hhhh==111111");
    putenv("111111111111111111111111111");
    extern char**environ;
    execvpe("./testexe",argv,environ);
    printf("child process exit\n");
    exit(1);
  }

  int status=0;
  pid_t rid=waitpid(id,&status,0);
  if(rid > 0)
  {
    printf("father wait sucess,status:%d\n",WEXITSTATUS(status));
  }
  else{
    printf("father wait failed!\n");
  }

  return 0;
}


//
//int main()
//{
//  pid_t id =fork();
//  if(id==0)
//  {
//    Runchild();
//    printf("child quit....\n");
//    exit(123);
//  }
//  sleep(7);
//  int status=0;
//  pid_t rid=waitpid(id,&status,0);
//  //pid_t rid=wait(NULL);
//  if(rid>0)
//  {
//    printf("wait sucess,rid:%d\n",rid);
//  }
//  else{
//    printf("wait failed!\n");
//  }
//  printf("father quit, status: %d, child quit code : %d, child quit signal: %d\n", status, (status>>8)&0x7F,status&0xF7);
//  sleep(2);
//
//
//  return 0;
//}
